extension_host: Improve Wasmtime timeslicing behavior for extensions #24986
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Addresses the discussion that goes into depth on why this is important when enabling async support with Wasmtime.
The tldr; is, async mode puts component execution within a
Future::poll
call, which if the component code is malicious or just expensive, can then block a given async thread.With this change it should provide an upper bound on how long a given extension can run before yielding back and allowing another task to execute.
This could be extended to also provide an upper bound to how long you would want a given call to take at all, as this implementation will still let it happily take forever, it just has to let other extensions have a turn.
Happy to discuss more, and also make any changes in case I missed something here. Or close if this change isn't desired for any reason.
Release Notes: